package hw;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 密码要求:
 *
 * 1.长度超过8位
 *
 * 2.包括大小写字母.数字.其它符号,以上四种至少三种
 *
 * 3.不能有长度大于2的包含公共元素的子串重复 （注：其他符号不含空格或换行）
 *
 * 数据范围：输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
 * 输入描述：
 * 一组字符串。
 *
 * 输出描述：
 * 如果符合要求输出：OK，否则输出NG
 *
 */
public class hj20 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){
            String s = in.nextLine();
            if (recheck(s)){
                System.out.println("OK");
            }else {
                System.out.println("NG");
            }
        }
        return;
    }

    public static boolean recheck(String str){
        //1.长度超过8位
        if (str.length() <= 8){
            return false;
        }
        //2.包括大小写字母.数字.其它符号,以上四种至少三种
        int sFlag = 0, bFlag = 0, nFlag = 0, oFlag = 0;
        for (char c : str.toCharArray()) {
            if (c>='a' && c<='z'){
                sFlag=1;
            }else if (c>='A' && c<='Z'){
                bFlag=1;
            }else if (c>='0' && c<='9'){
                nFlag=1;
            }else {
                oFlag=1;
            }
        }
        if (sFlag+bFlag+nFlag+oFlag < 3){
            return false;
        }
        //3.不能有长度大于2的包含公共元素的子串重复 （注：其他符号不含空格或换行）
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length()-2; i++) {
            String substring = str.substring(i, i + 3);
            if (map.containsKey(substring)){
                return false;
            }else {
                map.put(substring, 1);
            }
        }
        return true;
    }


}
